// pub struct Soluton {}
// use crate::solution::minimum_abs_difference::Solution;

use crate::solution::Solution;

// 对数组排序，选择第一个，丢弃所有冲突的，然后继续直到结束。
impl Solution {
    pub fn find_longest_chain(mut pairs: Vec<Vec<i32>>) -> i32 {
        pairs.sort_by(|a, b| a[1].cmp(&b[1]));
        pairs.iter().enumerate().fold((0, 1), |(i, cnt), (j, pair)| if pairs[i][1] < pair[0] { (j, cnt + 1) } else { (i, cnt) }).1
    }
}


// 目录里其他.rs文件有问题，也会影响到其他.rs文件，导致报错
#[cfg(test)]
mod tests {
    // 引用其他目录的impl Solution的话：use crate::algorithm::Solution;
    use super::*;

    #[test]
    fn test_1() {
        let pairs : Vec<Vec<i32>> = vec![vec![1,2],vec![2,3],vec![3,4]];
        let result = Solution::find_longest_chain(pairs);
        println!("{}", result);

        assert_eq!(result, 2);
    }
}
